#ifndef IALLOC_H
#define IALLOC_H

#include "AllocType.h"
#include "memnodes.h"

class IAllocSet
{
	public:
		virtual void *AllocSetAlloc(MemoryContext context, Size size) = 0;
		virtual void AllocSetFree(MemoryContext context, void *pointer) = 0;
		virtual void *AllocSetRealloc(MemoryContext context, void *pointer, Size size) = 0;
		virtual void AllocSetInit(MemoryContext context) = 0;
		virtual void AllocSetReset(MemoryContext context) = 0;
		virtual void AllocSetDelete(MemoryContext context) = 0;
		virtual Size AllocSetGetChunkSpace(MemoryContext context, void *pointer) = 0;
		virtual bool AllocSetIsEmpty(MemoryContext context) = 0;
		virtual void AllocSetStats(MemoryContext context, int level) = 0;

#ifdef MEMORY_CONTEXT_CHECKING
		virtual void AllocSetCheck(MemoryContext context) = 0;
#endif
};

#endif

